/*
 * Copyright 2004-2006 asoft
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.asoft.cn/licenses
 */

package com.asoft.common.sysframe.manager;

import java.util.List;
import java.util.Vector;

import org.apache.log4j.Logger;

import com.asoft.common.base.manager.BaseManager;
import com.asoft.common.sysframe.dao.UserDAO;
import com.asoft.common.sysframe.model.User;

/**
 * <p>Title: 人员</p>
 * <p>Description: 人员 User </p>
 * <p>Copyright: Copyright (c) 2004-2006</p>
 * <p>Company: asoft</p>
 * @ $Author: amon.lei $
 * @ $Date: 2007-2-20 $
 * @ $Revision: 1.0 $
 * @ created in 2007-2-20
 *
 */

public class UserManagerimp extends BaseManager
                            implements UserManager
{
        static Logger logger = Logger.getLogger(UserManagerimp.class);
        /**人员DAO*/
        private UserDAO userDAO;

        public void setUserDAO(UserDAO userDAO)
        {
                // 设置BaseManager.dao
                super.setDAO(userDAO);
                this.userDAO = userDAO;
        }
        
//        public Object save(Object obj)
//        {
//                User user = (User)obj;
//                if(user.getPost2Users() != null)
//                {
//                        Object[] p2us = user.getPost2Users().toArray();
//                        for(int i = 0; i < p2us.length; i ++)
//                        {
//                                super.save(p2us[i]);
//                        }
//                }
//                return super.save(obj);
//        }
        
        public Object update(Object obj)
        {
                User user = (User)obj;
                User oldUser = (User)this.get(user.getId());
                if(!user.getPost2Users().equals(oldUser.getPost2Users()))
                {
                        List oldP2Us = new Vector();
                        oldP2Us.addAll(oldUser.getPost2Users());
                        super.removeAll(oldP2Us);
                        if(user.getPost2Users() != null)
                        {
                                Object[] p2us = user.getPost2Users().toArray();
                                for(int i = 0; i < p2us.length; i ++)
                                {
                                        super.save(p2us[i]);
                                }
                        }
                }
                return super.update(obj);
        }

        /**
         * 描述:人员
         *
         * @ param:
         * @ param:orderBy 排序属性（for hql）
         * @ param:sortType 排序方式（asc or desc）
         * @ Exception:
         * @ return model集合
         */
        public List findUsers(String orgId,
                              String roleId,
                              String postId,
                              String account,
                              String name,
                              String address,
                              String email,
                              String phone,
                              String homeSite,
                              String mobile,
                              String status,
                              String orderBy,
                              String sortType)

        {
                return this.userDAO.findUsers(orgId,
                                              roleId,
                                              postId,
                                              account,
                                              name,
                                              address,
                                              email,
                                              phone,
                                              homeSite,
                                              mobile,
                                              status,
                                              orderBy,
                                              sortType);
        }

        public User getByAccount(String account)
        {
                return this.userDAO.getByAccount(account);
        }
}
